package com.teen9g.infoplatformserver.controller;

import com.github.pagehelper.PageInfo;
import com.teen9g.PageQueryDTO.MaimaiChunithmPageQueryDTO;
import com.teen9g.dto.MaimaiChunithmDTO;
import com.teen9g.entity.MaimaiChunithm;
import com.teen9g.infoplatformserver.service.MaimaiChunithmService;
import com.teen9g.result.Result;
import com.teen9g.userVO.MaimaiChunithmUserVO;
import com.teen9g.vo.MaimaiChunithmVO;
import lombok.extern.slf4j.Slf4j;
import org.codehaus.jettison.json.JSONException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
@CrossOrigin
@RequestMapping("/maimaiChunithm")
public class MaimaiChunithmController {

    @Autowired
    private MaimaiChunithmService maimaiChunithmService;

    /**
     * 根据id获取舞萌中二条目
     *
     * @param id 条目id
     * @return 舞萌中二条目
     */
    @GetMapping("/get/{id}")
    public Result<MaimaiChunithm> getById(@PathVariable Integer id) {
        log.info("获取id为{}的舞萌中二条目", id);
        MaimaiChunithm result = maimaiChunithmService.getById(id);
        return Result.success(result);
    }


    /**
     * 增加浏览量（缓存）
     *
     * @param id 舞萌中二条目id
     * @return 增加结果
     */
    @PostMapping("/addView/{id}")
    public Result<String> addView(@PathVariable Integer id) {
        log.info("增加条目为id的浏览量");
        maimaiChunithmService.addView(id);
        return Result.success();
    }

    /**
     * 添加舞萌中二条目
     *
     * @param maimaiChunithmDTO 舞萌中二条目
     * @return 添加结果
     */
    @PostMapping("/add")
    public Result<String> add(@RequestBody MaimaiChunithmDTO maimaiChunithmDTO) {
        log.info("添加舞萌中二条目");
        String result = maimaiChunithmService.add(maimaiChunithmDTO);
        return Result.success(result);
    }

    /**
     * 更新舞萌中二条目
     *
     * @param maimaiChunithmDTO 舞萌中二条目
     * @param id                舞萌中二条目id
     * @return 更新结果
     */
    @PutMapping("/update/{id}")
    public Result<String> update
    (@RequestBody MaimaiChunithmDTO maimaiChunithmDTO, @PathVariable Integer id)
            throws JSONException {
        log.info("更新id为{}的舞萌中二条目", id);
        String result = maimaiChunithmService.update(maimaiChunithmDTO, id);
        return Result.success(result);
    }

    /**
     * 删除舞萌中二条目
     *
     * @param id 舞萌中二条目id
     * @return 删除结果
     */
    @DeleteMapping("/delete/{id}")
    public Result<String> delete(@PathVariable Integer id) {
        log.info("删除id为{}的舞萌中二条目", id);
        String result = maimaiChunithmService.delete(id);
        return Result.success(result);
    }

    /**
     * 分页获取舞萌中二条目列表
     *
     * @param MCPQueryDTO 分页查询条件
     * @return 舞萌中二条目列表
     */
    @GetMapping("/page")
    public Result<PageInfo<MaimaiChunithmVO>> page(MaimaiChunithmPageQueryDTO MCPQueryDTO) {
        log.info("分页获取舞萌中二条目列表");
        PageInfo<MaimaiChunithmVO> result = maimaiChunithmService.page(MCPQueryDTO);
        return Result.success(result);
    }

    /**
     * 个人中心分页获取舞萌中二条目列表
     *
     * @param MCPQueryDTO 分页查询条件
     * @return 舞萌中二条目列表
     */
    @GetMapping("/page/user")
    public Result<PageInfo<MaimaiChunithmUserVO>> pageUser(MaimaiChunithmPageQueryDTO MCPQueryDTO) {
        log.info("个人中心分页获取舞萌中二条目列表");
        PageInfo<MaimaiChunithmUserVO> result = maimaiChunithmService.pageUser(MCPQueryDTO);
        return Result.success(result);
    }

}
